package computacaografica;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;

public class GraficoBarras {

	private int[] valores;

	private BufferedImage imageBuffer;

	private Color background;

	private int largura, altura, escala;

	private Color[] cores = { Color.BLUE, Color.GREEN, Color.RED, Color.YELLOW };

	public GraficoBarras(int[] valores, int largura, int altura, int escala){
		this.valores = valores;
		this.largura = largura;
		this.altura = altura;
		this.escala = escala;
		this.background = Color.WHITE;
		this.criaColunas();
	}

	private void criaColunas(){
		this.imageBuffer = new BufferedImage(this.largura, this.altura,
				BufferedImage.TYPE_INT_RGB);
		Graphics g = this.imageBuffer.createGraphics();
		g.setColor(this.background);
		g.fillRect(0, 0, this.largura, this.altura);
		int inicioX = 20;
		int inicioY = 20;
		int alturaBarra = 30;
		int espacoBarra = 10;
		int[] larguras = this.calculaLarguras(this.valores);
		for (int i = 0, j = 0; i < larguras.length; i++, j++) {
			g.setColor(this.cores[j]);
			g.fillRect(inicioX, inicioY, larguras[i], alturaBarra);
			inicioY += alturaBarra + espacoBarra;
		}
	}

	public BufferedImage getBuffer() {
		return this.imageBuffer;
	}

	public ImageIcon getImage() {
		return new ImageIcon(this.imageBuffer);
	}

	private int[] calculaLarguras(int[] valores){
		int[] larguras = new int[valores.length];
		for (int i = 0; i < valores.length; i++) {
			larguras[i] = valores[i]*escala;
		}
		return larguras;
	}
}
